package huashi.z_interceptor;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;


@Component
public class MyWebAppConfigurer implements HandlerInterceptor {
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {
		
		if(request.getSession().getAttribute(Constant.USER) == null){
			response.sendRedirect("/jump?client_url="+Helper.getClient_url(request));
			return false;
		}else{
			return true;
		}
		
//		/**
//		 * 有三种验证登陆的方式
//		 * 1、查询cookie里面的code信息是否存在
//		 * 2、查询本项目session里面的登陆信息是否存在
//		 * 3、综合1、2两种来验证:
//		 * 		如果1存在,2存在,以1为主重新获取一边本项目的信息
//		 * 		如果1或者2,有一个有则以为那一个为主
//		 */
//		// 1、获取客户端请求里的cookie中key为code的值
//		String code= Helper.interceptgetloginId(request);
//		if(code == null){
//	        // 2、获取客户端被拦截的请求的路径
//			String client_url = Helper.getClient_url(request);
//			//  指向sso接口,在sso接口中定义sso的具体路径
//			response.sendRedirect("/jump?client_url="+client_url);
//			return false;
//		}else{
//			return true;
//			/**
//			 * 去SSO获取用户信息
//			 */
//		}
		
		
	}
	
	
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println(">>>MyInterceptor>>>>>>>请求处理之后进行调用，但是在视图被渲染之前（Controller方法调用之后）");
	}
	
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println(">>>MyInterceptor>>>>>>>在整个请求结束之后被调用，也就是在DispatcherServlet 渲染了对应的视图之后执行（主要是用于进行资源清理工作）");
	}
	
	
	
}
